Region Migration 使用指南 — 如何迁移 Datanode 数据表分区
自 0.6 版本起,GreptimeDB 分布式版本具备了将 Datanode 上的数据表分区(Region)数据迁移到另一个 Datanode 的能力。在上一篇《Region Migration 技术原理》的文章中,我们详细介绍了 Region Migration 实现的具体的技术细节。
本文将演示如何使用这项功能。
(数据表分区迁移示意图)
预告
点击链接 🔗 预约今晚(周四) 19:30 的视频号直播,🔍 详细了解 GreptimeDB v0.7 的架构设计和功能逻辑,和我们的核心工程师面对面 👇
🎁 点击下方直播链接立即预约,进入直播间还机会获得限量版礼品哦~前置条件
使用 Remote WAL
使用共享存储(例:AWS S3)
CREATE TABLE monitor (
host STRING,
ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP() TIME INDEX,
cpu DOUBLE DEFAULT 0,
memory DOUBLE,
PRIMARY KEY(host));
INSERT INTO monitor
VALUES
("127.0.0.1", 1702433141000, 0.5, 0.2),
("127.0.0.2", 1702433141000, 0.3, 0.1),
("127.0.0.1", 1702433146000, 0.3, 0.2),
("127.0.0.2", 1702433146000, 0.2, 0.4),
("127.0.0.1", 1702433151000, 0.4, 0.3),
("127.0.0.2", 1702433151000, 0.2, 0.4);
select
b.peer_id as datanode_id,
a.greptime_partition_id as region_id
from
information_schema.partitions a
left join
information_schema.greptime_region_peers b
on a.greptime_partition_id = b.region_id
where a.table_name='monitor'
order by datanode_id asc;
+-------------+---------------+
| datanode_id | region_id |
+-------------+---------------+
| 1 | 4398046511104 |
+-------------+---------------+
1 row in set (0.01 sec)
我们可以将数据表的 Region 迁移至另一个不同的节点上(演示集群包含 3 个 Datanode 节点,ID 分别为 0、1、2)。
如下所示,会将 ID 为 4398046511104 的 Region 迁移至 Datanode ID 为 2 的节点上。
select migrate_region(4398046511104, 1, 2, 60);
+------------------------------------------------------------------+
| migrate_region(Int64(4398046511104),Int64(1),Int64(2),Int64(60)) |
+------------------------------------------------------------------+
| 0f65f485-2790-4bf3-8b71-74f73ef15457 |
+------------------------------------------------------------------+
1 row in set (0.00 sec)
迁移执行后会返回执行迁移的 Procedure ID,可通过该 ID 查询迁移状态。
1.3 查询迁移状态
select procedure_state('0f65f485-2790-4bf3-8b71-74f73ef15457');
+---------------------------------------------------------------+
| procedure_state(Utf8("0f65f485-2790-4bf3-8b71-74f73ef15457")) |
+---------------------------------------------------------------+
| {"status":"Done"} |
+---------------------------------------------------------------+
1 row in set (0.00 sec)
当查询返回 status 为 Done 时,表明该 Procedure 已成功执行完成。
select * from information_schema.greptime_region_peers;
+---------------+---------+--------------------------------------------------------------+-----------+--------+--------------+
| region_id | peer_id | peer_addr | is_leader | status | down_seconds |
+---------------+---------+--------------------------------------------------------------+-----------+--------+--------------+
| 4398046511104 | 2 | greptimedb-datanode-2.greptimedb-datanode.my-greptimedb:4001 | Yes | ALIVE | NULL |
+---------------+---------+--------------------------------------------------------------+-----------+--------+--------------+
1 row in set (0.02 sec)
更多内容
使用 Helm Chart 部署分布式 GreptimeDB Kafka Remote WAL 文档 - User Guide:
https://docs.greptime.cn/user-guide/operations/kafka-remote-wal
同时,社区也是一个宝贵的支持网络,欢迎您积极参与讨论,向经验丰富的用户和开发团队请教,获取及时而专业的支持。如果您遇到任何问题,欢迎前往 GitHub Discussion 进行讨论,也可以扫码添加下方小助手微信,加入技术交流群。我们期待您的反馈!
关于 Greptime
Greptime 格睿科技专注于为智能汽车、物联网及可观测等产生大量时序数据的领域提供实时、高效的数据存储和分析服务,帮助客户挖掘数据的深层价值。目前主要有以下四款产品:GreptimeDB 是一款用 Rust 语言编写的时序数据库,具有分布式、开源、云原生、兼容性强等特点,帮助企业实时读写、处理和分析时序数据的同时,降低长期存储的成本。
GreptimeCloud 基于开源的 GreptimeDB,为用户提供全托管的 DBaaS,能够与可观测性、物联网等领域结合的应用产品结合。利用云提供软件和服务,可以达到快速的自助开通和交付,标准化的运维支持,和更好的资源弹性。现已正式公测,欢迎关注公众号或官网了解最新动态!
GreptimeAI 是为 LLM 应用量身定制的可观测性解决方案,开发者可以通过该方案全面、深入地了解应用的成本、性能、流量和安全情况,在保证低成本和高性能的同时提供高效可靠的分析能力,同时保留了时序数据库的灵活性。
车云一体解决方案 是一款深入车企实际业务场景的时序数据库解决方案,解决了企业车辆数据呈几何倍数增长后的实际业务痛点。
GreptimeCloud 和 GreptimeAI 已正式公测,欢迎关注公众号或官网了解最新动态!我们提供 GreptimDB Enterprise 版本,如有需要欢迎联系小助手(微信搜索 greptime 或扫描下方二维码添加)。
GreptimeDB 作为开源项目,欢迎对时序数据库、Rust 语言等内容感兴趣的同学们参与贡献和讨论。第一次参与项目的同学推荐先从带有 Good First Issue 标签的 Issue 入手,期待在开源社群里遇见你!
Star us on GitHub Now:
https://github.com/GreptimeTeam/greptimedb
官网:https://greptime.cn/
文档:https://docs.greptime.cn/
Twitter: https://twitter.com/Greptime
Slack: https://greptime.com/slack
LinkedIn: https://www.linkedin.com/company/greptime/
往期精彩文章:👇 点击下方阅读原文,立即体验最新版的 GreptimeDB!